package CutLoad.cookies
{
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.SecurityErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	/**
	 * 读取ini格式的文件 
	 * @author smallerbird mail:smallerbird@gmail.com  site:www.mkigm.com QQ群:49983196
	 * 
	 */	
	public class CIniReader
	{		
		private var myUrl:URLRequest,loadOk:Function,loadNo:Function;
		private var loader:URLLoader;
		private var objData:Object
		/**
		 * 
		 * @param url 路径
		 * @param loadOk 加载完成时调用的方法:格式：fun(加载的原始数据:String)
		 * @param loadNo 加载失败时调用的方法。默认为空.
		 * @param isStartLoad 是否开始加载
		 * <p>注：ini文件格式(可以没有注释)</p>
		 * <p>#这个是注释1变量1=内容#这个是注释2变量2=内容</p>
		 * 
		 */		
		public function CIniReader(url:String,loadOk:Function,loadNo:Function=null,isStartLoad:Boolean=true)
		{
			//
			this.loadOk=loadOk;
			this.loadNo=loadNo;
			//
			myUrl=new URLRequest(url);
			loader=new URLLoader();
			loader.addEventListener(Event.COMPLETE,loadComp);
			if(loadNo!=null){
				loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
				loader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
			}
			if(isStartLoad) startLoad();
			//
			objData=new Object();
		}
		/**
		 * 开始加载 
		 * 
		 */		
		public function startLoad():void{
			loader.load(myUrl);
		}
		//成功
		private function loadComp(e:Event):void{
			var strData:String=loader.data;
			formatIni(strData);
			loadOk(strData);
		}
		/**
		 * 格式化ini文本 
		 * @param str
		 * 
		 */		
		public function formatIni(str:String):void{
			var arr:Array=str.split("\r\n");
			var strTem:String;
			for(var i:Number=0;i<arr.length;i++){
				strTem=arr[i];
				var strTem1:String=strTem.substr(0,1);
				if(strTem1!="#"){
					var arrTem:Array=strTem.split("=");
					if(arrTem.length>=2){
						var vauleTem:String=arrTem[1];
						if(arrTem.length>2){
							for(var kk:Number=2;kk<arrTem.length;kk++)
							vauleTem+="="+arrTem[kk];
						}
						objData[arrTem[0]]=vauleTem;
					}
				}
			}
		}
		/**
		 * 返回配置信息 
		 * @param Name 键值
		 * @return 
		 * 
		 */		
		public function getData(Name:String):String{
			var str:String=objData[Name];
			if(str==null) str="没有找到!";
			return str;
		}
		/**
		 *  返回配置信息 并转换成数字
		 * @param Name 键值
		 * @return 
		 * 
		 */		
		public function getData_Number(Name:String):Number{
			return Number(getData(Name));
		}
		//错误
		private function securityErrorHandler(event:SecurityErrorEvent):void {
			loadNo();
		}
		private function ioErrorHandler(event:IOErrorEvent):void {
			loadNo();
		}

		
	}
}